package cliente.pagina.contenido.ExamenAutoexamen.Docente;

import helpers.examenAutoexamen.HelperExamenAutoexamen;
import comun.constantes.ACCIONES_A_REALIZAR;
import comun.constantes.CARPETAS_ARCHIVOS_RECURSO;
import comun.constantes.PARAMETROS_PAGINAS;
import comun.constantes.RECURSOS;
import comun.constantes.TEXTOS;
import comun.constantes.TIPO_PERMISOS;
import cliente.pagina.Pagina;
import cliente.pagina.contenido.VistaContenido;

public class ContenidoGestionBD extends VistaContenido  {
	
	public ContenidoGestionBD() {}
	
	protected String getSubcarpetaRecurso() {
		return CARPETAS_ARCHIVOS_RECURSO.EVALUACIONES+"/";
	}
	
	public ContenidoGestionBD(Pagina pagina) {
		super(pagina);
		this.setPermisoEscritura(this.getPagina().obtenerPermisoRecurso(this.getNombreRecurso()).compareTo(TIPO_PERMISOS.ESCRITURA)==0);
	}
	
	public String getNombreRecurso() {
		return RECURSOS.EVALUACIONES;
	}
	
	public String getHTMLVista() {
		String html="";
		HelperExamenAutoexamen helperEA = new HelperExamenAutoexamen(this.getPagina());
		try{
			String filtro = this.getPagina().getParameter(PARAMETROS_PAGINAS.FILTRO_BD);
			String filtroEx = this.getPagina().getParameter(PARAMETROS_PAGINAS.FILTRO_BD+"Ex");
			String filtroCuest = this.getPagina().getParameter(PARAMETROS_PAGINAS.FILTRO_BD+"Cuest");
			System.out.println("filtros: "+filtroEx+ "; "+filtroCuest);
			Long idEx_Autoex=null;
			String idEval = this.getPagina().getParameter(PARAMETROS_PAGINAS.ID_EVALUACION);
			String procesarArchivo = this.getPagina().getParameter(PARAMETROS_PAGINAS.ACCION_EX);
			//nuevo
			String procesarExportar = this.getPagina().getParameter(PARAMETROS_PAGINAS.ACCION_PREG);
			
			//El archiv a procesar q contenga las preguntas q deseo agregar debe ser cargado guardado en el sistema.
			//Para esto he creado en el lado del serv de pruebas una carpeta en siat2/archivos/ evaluaciones, asi alli almacenos mis archivos
			
			if(idEval!=null){
				idEx_Autoex = new Long(idEval);
			}
			String esEx=this.getPagina().getParameter("EsExamen");
			/* si esEx =null es cuestionario*/
			boolean esExamen=false;
			if(esEx!=null && esEx.compareTo("true")==0) esExamen=true;
			if(esEx!=null && esEx.compareTo("false")==0) esExamen=false;
			String masPreg=this.getPagina().getParameter("masPreg");
			boolean masPreguntas=false;
			if(masPreg!=null && masPreg.compareTo("true")==0){
				masPreguntas=true;
			}
			if(procesarExportar!=null){
				System.out.println("Exportando:  " +procesarExportar);
				html+=this.procesarExportarPreguntas(procesarExportar);
			}
			if(procesarArchivo!=null && procesarArchivo.compareTo("importarPreguntas")==0){
				System.out.println("Importando");
				this.grabarArchivo();
			}
			if(idEval==null){
				String permGestEx = this.getPagina().obtenerPermisoRecurso(RECURSOS.GESTION_EXAMEN);
				String permGestAutoex = this.getPagina().obtenerPermisoRecurso(RECURSOS.GESTION_AUTOEXAMEN);
				String permGestCuest = this.getPagina().obtenerPermisoRecurso(RECURSOS.GESTION_CUESTIONARIO);
				html+="       <h1>"+this.getTitulo()+"</h1>\n";
				boolean permEscrEx = (permGestEx.compareTo(TIPO_PERMISOS.ESCRITURA)==0);
				boolean permEscrAutoex =(permGestAutoex.compareTo(TIPO_PERMISOS.ESCRITURA)==0);
				if( permEscrEx || permEscrAutoex ){
					String titulo ="";
					if (permEscrEx && permEscrAutoex) titulo="Preguntas de ex&aacute;menes/autoex&aacute;menes";
					if (permEscrEx && !permEscrAutoex) titulo="Preguntas de ex&aacute;menes";
					if (!permEscrEx && permEscrAutoex) titulo="Preguntas de autoex&aacute;menes";
					html+=helperEA.getHTMLCodigoFiltroBaseDatosGeneralEx(titulo,filtroEx,filtroCuest);
					html+=helperEA.getHTMLPreguntasBaseDatosGeneralEx(filtroEx,filtroCuest);
				}
				if(permGestCuest.compareTo(TIPO_PERMISOS.ESCRITURA)==0){
					html+=helperEA.getHTMLCodigoFiltroBaseDatosGeneralCuest(filtroEx,filtroCuest);
					html+=helperEA.getHTMLPreguntasBaseDatosGeneralCuest(filtroEx,filtroCuest);
				}
				html+=helperEA.getHTMLImportarBaseDatosGeneral();
			}else{
				if(esEx==null){
					html+="       <h1>"+this.getTitulo()+"</h1>\n";
					html+=helperEA.getHTMLCodigoFiltroCuest(filtro,masPreguntas,idEx_Autoex);
					html+= helperEA.getHTMLPreguntasBDCuest(filtro,idEx_Autoex,masPreguntas);
				}else{
					html+="       <h1>"+this.getTitulo()+"</h1>\n";
					html+=helperEA.getHTMLCodigoFiltroBD(filtro,esExamen,masPreguntas,idEx_Autoex);
					html+= helperEA.getHTMLPreguntasBD(filtro,idEx_Autoex,esExamen,masPreguntas);
				}
			}
			helperEA.commit();
		}catch(Exception ex){
			ex.printStackTrace();
			helperEA.rollback();
			return  comun.MensajeDeError.ERROR_EN_LA_GENERACION_DE_LA_PAGINA;
		}
		return html;
	}
	
	public String getTitulo() {
		return TEXTOS.IMPORTARBD;
	}
	
	protected String getNombrePagina() {
		return "gestionbd.jsp";
	}
	
	public String getTituloLink() {
		return ">Importar de Base de Datos";
	}
	
	private void grabarArchivo () throws Exception{
		HelperExamenAutoexamen helperExA = new HelperExamenAutoexamen(this.getPagina());
		try{
			helperExA.grabarArchivo();
		//	System.out.println("ACCION DE CABECERA EX:   " + accion);
			helperExA.commit();
		}catch(Exception ex){
			ex.printStackTrace();
			helperExA.rollback();
			throw ex;
		}
	}
	
	protected String procesarExportarPreguntas(String procesarExportar) throws Exception {
		HelperExamenAutoexamen helperExA = new HelperExamenAutoexamen(this.getPagina());
		try{
			String html=helperExA.exportarPreguntas(procesarExportar);
			helperExA.commit();
			return html;
		}catch(Exception ex){
			ex.printStackTrace();
			helperExA.rollback();
			throw ex;
		}
	}
	
	public String getTeclaAccesoRapido() {
		// TODO Auto-generated method stub
		return "";
	}
}
